package com.konke.sdslibrary;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.sds.sdk.android.sh.common.SHClientState;
import com.sds.sdk.android.sh.common.SHDeviceRealType;
import com.sds.sdk.android.sh.common.SHDeviceSubType;
import com.sds.sdk.android.sh.common.SHDeviceType;
import com.sds.sdk.android.sh.common.SHGuardSensorType;
import com.sds.sdk.android.sh.internal.request.ChopinFreshAirConfigArgsResult;
import com.sds.sdk.android.sh.internal.request.FancoilConfigArgsResult;
import com.sds.sdk.android.sh.internal.request.FloorheatingConfigArgResult;
import com.sds.sdk.android.sh.internal.request.GetFreshAirStatusResult;
import com.sds.sdk.android.sh.model.Action;
import com.sds.sdk.android.sh.model.AddCodeLibResult;
import com.sds.sdk.android.sh.model.AddCodedLockUserResult;
import com.sds.sdk.android.sh.model.AddSceneResult;
import com.sds.sdk.android.sh.model.AirBoxNodeArgResult;
import com.sds.sdk.android.sh.model.ArmingState;
import com.sds.sdk.android.sh.model.CodeLibBaseResult;
import com.sds.sdk.android.sh.model.CodeLibBindResult;
import com.sds.sdk.android.sh.model.CodeLibTaskResult;
import com.sds.sdk.android.sh.model.Condition;
import com.sds.sdk.android.sh.model.Controller;
import com.sds.sdk.android.sh.model.Device;
import com.sds.sdk.android.sh.model.DeviceOnlineState;
import com.sds.sdk.android.sh.model.FancoilSmartModel;
import com.sds.sdk.android.sh.model.Gateway;
import com.sds.sdk.android.sh.model.GetAirBoxDayStatisitcResult;
import com.sds.sdk.android.sh.model.GetAirBoxStateResult;
import com.sds.sdk.android.sh.model.GetAirSwitchStatusResult;
import com.sds.sdk.android.sh.model.GetAlarmRecordResult;
import com.sds.sdk.android.sh.model.GetCcuInfoResult;
import com.sds.sdk.android.sh.model.GetCcuVersionResult;
import com.sds.sdk.android.sh.model.GetCodedLockUserInfoResult;
import com.sds.sdk.android.sh.model.GetCodelibButtonsResult;
import com.sds.sdk.android.sh.model.GetCodelibResult;
import com.sds.sdk.android.sh.model.GetDayPowerResult;
import com.sds.sdk.android.sh.model.GetDevDetectedPowerResult;
import com.sds.sdk.android.sh.model.GetDevHwInfoResult;
import com.sds.sdk.android.sh.model.GetDevInfoResult;
import com.sds.sdk.android.sh.model.GetDevStatusLogResult;
import com.sds.sdk.android.sh.model.GetDimmableLightConfigResult;
import com.sds.sdk.android.sh.model.GetElectricalClearingDateResult;
import com.sds.sdk.android.sh.model.GetElectricalClearingInfoResult;
import com.sds.sdk.android.sh.model.GetElectricalEnergyArgsResult;
import com.sds.sdk.android.sh.model.GetElectricalEnergyValueResult;
import com.sds.sdk.android.sh.model.GetElectricalSwitchStatusResult;
import com.sds.sdk.android.sh.model.GetFancoilSmartModelResult;
import com.sds.sdk.android.sh.model.GetFancoilSystemStatusResult;
import com.sds.sdk.android.sh.model.GetFloorheatingStatusResult;
import com.sds.sdk.android.sh.model.GetGwWhitelistResult;
import com.sds.sdk.android.sh.model.GetGwWorkmodeResult;
import com.sds.sdk.android.sh.model.GetHomebridgeStatusResult;
import com.sds.sdk.android.sh.model.GetInfraredLastSendCodeResult;
import com.sds.sdk.android.sh.model.GetLocalCodelibsResult;
import com.sds.sdk.android.sh.model.GetLockOpenRecordResult;
import com.sds.sdk.android.sh.model.GetLockUserListResult;
import com.sds.sdk.android.sh.model.GetMonthPowerResult;
import com.sds.sdk.android.sh.model.GetMusicControllerStatusResult;
import com.sds.sdk.android.sh.model.GetMusicListResult;
import com.sds.sdk.android.sh.model.GetSocketRunArgsResult;
import com.sds.sdk.android.sh.model.GetYearPowerResult;
import com.sds.sdk.android.sh.model.GetYouzhuanMusicListResult;
import com.sds.sdk.android.sh.model.GetZbDevOnlineSwitchResult;
import com.sds.sdk.android.sh.model.GetZigbeeDevPingResult;
import com.sds.sdk.android.sh.model.Group;
import com.sds.sdk.android.sh.model.IFTTT;
import com.sds.sdk.android.sh.model.IFTTTEX;
import com.sds.sdk.android.sh.model.Limit;
import com.sds.sdk.android.sh.model.MotorOpt;
import com.sds.sdk.android.sh.model.PrepareTestCodeLibResult;
import com.sds.sdk.android.sh.model.Room;
import com.sds.sdk.android.sh.model.Scene;
import com.sds.sdk.android.sh.model.ShortcutPanelConfig;
import com.sds.sdk.android.sh.model.TextIndicatorResult;
import com.sds.sdk.android.sh.model.VoidResult;
import com.sds.sdk.android.sh.model.WhiteDev;
import com.sds.sdk.android.sh.model.ZigbeeFanCoilStatus;
import com.sds.sdk.android.sh.model.ZigbeeFloorHeatingStatus;
import com.sds.sdk.android.sh.model.ZigbeeFreshAirStatus;
import com.sds.sdk.android.sh.model.ZigbeeUniversalBoosSensorStatus;

import java.util.List;

/**
 * 一个智慧中心内的房间、设备等配置与查询接口,roomid:-1 means all room
 */
public interface SmartHomeApi {

    boolean sycnData();

    SHClientState getCurrentState();

    List<Device> queryNewDevice();

    List<Device> queryNewDevice(SHDeviceType type);

    List<Device> queryNewDevice(SHDeviceType type, SHDeviceSubType subType);

    List<Device> queryDevice(SHDeviceType type);

    List<Device> queryDevice(SHDeviceType type, SHDeviceSubType subType);

    List<Device> queryZigbeeDevices();

    Device queryZigbeeDevice(int id);

    Device loadDevice(int id, SHDeviceType type);

    Device loadDevice(String id, SHDeviceType type);

    DeviceOnlineState findZigbeeDeviceOnlineState(String mac);

    SHDeviceRealType loadDeviceRealType(int id, SHDeviceType type);

    Scene loadScene(int id);

    Scene findSceneWithPanel(int id);

    Group loadGroup(int id);

    IFTTT loadRule(int id);

    IFTTTEX loadExRule(int id);

    GetDevStatusLogResult queryDeviceLogs(int pageIdx, int pageSize, int id, String beginDay, String endDay);

    VoidResult deleteAlarmMsg(String key);

    GetDevInfoResult queryZigbeeDeviceInfo(int id);

    GetAlarmRecordResult queryAlarmRecord(int pageNo, int pageSize);

    String queryDevicePowerById(int id);

    GetDayPowerResult queryPowerByDay(int id, String start, String end);

    GetMonthPowerResult queryPowerByMonth(int id, String start, String end);

    GetYearPowerResult queryPowerByYear(int id, String start, String end);

    GetCcuVersionResult queryCcuVersion();

    GetCcuInfoResult queryCcuInfo();


    boolean upgradeKitCcu(String url);

    GetMusicListResult queryMusicList(int id);

    GetMusicControllerStatusResult queryMusicStatus(int id);

    VoidResult restoreCcu(String fromCcuId, String url);

    VoidResult backupCcu();

    void lanCon();

    GetZigbeeDevPingResult pingZigbeeDev(int gwId, String[] devMacs);

    GetDevHwInfoResult getDevicesHwInfo(String[] macs);

    Gateway findGetewayInfo(String mac);

    VoidResult resetGwFouctoryMode(int gwId);

    /**************************************
     * 查询房间、设备等接口
     ****************************************/
    List<Room> queryAllRooms();

    Room queryRoom(int roomId);

    Controller queryController(int devId);

    List<Controller> queryAllControllers();

    List<Device> queryDevice(int roomId, String gwmac);

    List<Device> queryDevice(String gwMac);

    List<Device> findDeviceByMac(String mac);

    int findZigbeeDeviceProductId(String mac);

    List<Device> queryDevice(int roomId);

    List<Device> queryDevice(int roomId, SHDeviceType type);

    List<Scene> queryScene(int roomId);

    List<Group> queryGroup();

    List<IFTTT> queryIfttt();

    List<IFTTTEX> queryIftttEx();

    int queryOnLightCount(List<Device> devices);

    int queryOpenCurtainCount(List<Device> devices);

    double queryAvgTemp(List<Device> devices);

    double queryAvgHumi(List<Device> devices);

    boolean doorIsOpen(List<Device> devices);

    boolean hasPerseon(List<Device> devices);

    ArmingState queryArmingStatus();

    int[] getCustomGuardZones();

    boolean setCustomZoneGuard(int[] roomIds);

    int getSecurityLeaveHomeDelay();

    boolean setSecurityLeaveHomeDelay(int delay);

    boolean setSecurityLeaveHomeDelay(ArmingState armingState);

    String getCurCcuVersion();

    SHGuardSensorType queryGuardSensorType(int devId);

    GetLockUserListResult asyncLockUserList(int devId);

    GetLockOpenRecordResult asyncLockOpenRecordList(int devId, int pageIdx, int pageSize, String beginDay, String endDay);

    GetInfraredLastSendCodeResult getInfraredGetLastSendCode(int devId);

    VoidResult switchHomebridge(String id, boolean on);

    GetHomebridgeStatusResult getHomebridgeStatus(String id);

    List<Device> findZigbeeDevicesByLast4Mac(String lastMac);

    List<Device> findDevicesByName(String devName);

    /**************************************
     * 新增房间、各种设备
     ****************************************/
    boolean setRoomDnd(int roomId, boolean on);

    Room addRoom(int floorId, String roomName, String roomIcon, int roomPos);

    AddSceneResult addScene(String sceneType, String sceneImange, String name, int roomId);

    IFTTT addIFttt(String name, int roomId, boolean notificationEnable, boolean ruleEnable, List<Condition> conditionList, List<Action> actionList);

    IFTTTEX addIFtttEx(String name, int roomId, boolean notificationEnable, boolean ruleEnable, List<Condition> conditionList, List<Limit> limitList,
                       List<Action> actionList);

    /**************************************
     * 编辑房间、各种设备
     ****************************************/
    void searchIPC();

    boolean setGwName(int id, String name);

    Room editRoom(int roomId, int floorId, String roomName, String roomIcon, int roomPos);

    Scene editScene(int id, String sceneType, String sceneImange, String name, int roomId);

    boolean setSceneTimer(int id, boolean enableTimer, String time, List<String> week);

    boolean setSceneAction(int id, List<Action> actionList);

    Group editGroup(int id, String name, List<String> nodeIds);

    IFTTT editIFttt(int id, String name, int roomId, boolean notificationEnable, boolean ruleEnable, List<Condition> conditionList, List<Action> actionList);

    IFTTTEX editIFtttEx(int id, String name, int roomId, boolean notificationEnable, boolean ruleEnable, List<Condition> conditionList, List<Limit> limitList, List<Action> actionList);

    boolean enableIfttt(int id, boolean enable);

    boolean enableIftttEx(int id, boolean enable);

    boolean delRoom(int roomId);

    boolean delGateway(int id);

    boolean upgradeGateway(int id);

    boolean upgradeGateway9531(int gwId, String url);

    boolean setMusicControllerZoneName(int id, int zoneId, String zoneName);

    Device editDevice(SHDeviceType type, int devId, int roomId, String devName, String devIcon);

    VoidResult replaceDevice(String newDevMac, String oldDevMac, String gwMac);

    Device editSensor(SHDeviceType type, int devId, int roomId, String devName, String devIcon, SHGuardSensorType sensorType);

    boolean setSensorRunmode(int id, ZigbeeUniversalBoosSensorStatus.ModuleType type);

    boolean asyncBindScene(int id, int sceneid);

    Device editKSocket(int devId, String devName, int roomId);

    Device editKLight(int devId, String devName, int roomId);

    Device editHueLight(int devId, String devName, String icon, int roomId);

    Device editJufengIPC(int devId, String devName, int roomId);

    Device editMusicController(int devId, String name, int roomId);

    Device editKonkeHumidifier(int devId, String name, int roomId);

    Device editKonkeAircleaner(int devId, String name, int roomId);

    Device asyncEditModbus(int id, int roomId, String name);

    Device asyncEditDaikinIndoorUnit(int id, int roomId, String name);

    Device asyncEditCentralAcGw(int id, int roomId, String name);

    Device asyncEditCentralAcIndoorUnit(int id, int roomId, String name);

    GetGwWorkmodeResult getGwWorkmode(int gwId);

    VoidResult setGwWorkmode(int gwId, int workMode);

    GetGwWhitelistResult getGwWhitelist(int gwId);

    VoidResult addGwWhiteList(int gwId, List<WhiteDev> devList);

    VoidResult delGwWhiteList(int gwId, String[] devMacs);


    boolean asyncDelModbus(int id);

    boolean asyncDelCenralAcGw(int id);

    boolean asyncDelDaikinIndoorUnit(int id);

    boolean asyncOptDaikinIndoorUnit(int id, boolean on, String runModel, String speed, int temp);

    boolean asyncOptCentralAcGwIndoorUnit(int id, boolean on, String runModel, String speed, int temp);

    boolean asyncEditLockUser(int id, int userId, int openType, String nickName);

    boolean editLockPassword(int id, String oldpwd, String newpwd);

    boolean asyncSetShortcutPanelAction(int id, List<ShortcutPanelConfig> configList);

    boolean deleteDevice(String mac);

    boolean deleteKSocket(int devId);

    boolean deleteKLight(int devId);

    boolean deleteKonkeHumidifier(int devId);

    boolean deleteKonkeAircleaner(int devId);

    boolean deleteHueLight(int devId);

    boolean deleteJufengIPC(int devId);

    boolean deleteScene(int sceneId);

    boolean delGroup(int gid);

    boolean delIFttt(int id);

    boolean delIFtttEx(int ruleId);

    boolean deleteMusicController(int id);

    void cancelWarning();

    void readAlarmMsg(String key);

    void readAlarm(String startTime, String endTime);

    void clearSosAlarm(int id);

    boolean rfOpt(int devId, int code);

    void asyncLearnInfrared(int id, int code);

    boolean saveInfrared(int id, int code);

    boolean saveRF(int id, int code);

    boolean saveInfraredRC(int id, List<Controller.Button> buttons);

    void asyncLearnRF(int id, int code);

    GetDevDetectedPowerResult getDevDetectPowerResult(int id);

    boolean setDevDetectPowerByHand(int id, String standby, String running);

    boolean activeDevDetectPower(int id);


    boolean saveRFRC(int id, List<Controller.Button> buttons);

    GetCodelibResult getInfraredBindCodelib(int id);

    void detectDevStandByPower(int id);

    void detectDevRunningPower(int id);

    void controllerSmartSwitch(int id, boolean on);

    void asynResetInfraredBindCodelib(int id);

    CodeLibBaseResult uploadCodelibToCloud(int codelibId);

    GetLocalCodelibsResult getInfraredCodelib(String devType);

    CodeLibBaseResult renameLocalCodelib(int codeId, String codelibName);

    CodeLibBindResult getCodelibBindInfrareds(int libId);

    CodeLibBaseResult deleteInfraredCodelib(int libId);

    AddCodeLibResult addInfraredCodelib(int devId, String libType, String libName, String codeLibLocation);

    CodeLibBaseResult testInfraredCodelib(int devId, int libId, int code);

    CodeLibBaseResult testCloudCodelib(int id, int codelibId, int codeId);

    CodeLibBaseResult prepareTestCloudlib(int codelibId);

    PrepareTestCodeLibResult downloadCodeFromCloud(int cloudLibId, int type, String devType, String devBound, String devModel, String name, String pcode);

    void matchInfraredCodelib(int libId, String devType);

    CodeLibTaskResult getCodelibWorkingTask();

    GetCodelibButtonsResult getCodelibUiButtons(int libId);

    void asynUploadCodelib(int id, int libId);

    boolean bindLockWithDoorcontact(int id, int dcId);

    boolean asyncBindInfraredSocket(int id, int socketId);

    boolean inShortCutPanel(int nodeId);

    boolean inController(int nodeId);

    boolean inLock(int nodeId);

    boolean inGroup(int nodeId);

    List<Group> findGroupsByDeviceId(int nodeId);

    boolean inScene(SHDeviceType type, int nodeId);

    boolean inIFTTT(SHDeviceType type, int nodeId);

    /**************************************
     * 操作各种设备
     ****************************************/
    boolean openGatewayChannel(int id);

    boolean closeGatewayChannel(int id);

    TextIndicatorResult getTextIndicatorStatus(int nodeId);

    VoidResult setTextIndicatorArgs(int nodeId, int offTime);

    boolean openHueGatewayChannel(int id);

    boolean activateHueGateway(int id);

    void switchArmingState(ArmingState state);

    void switchRoomLights(int roomId, boolean on);

    void optRoomCurtains(int roomId, MotorOpt opt);

    void switchOpt(int id, boolean on);

    boolean switchSocketChannel(int id, int channel, boolean on);

    VoidResult adjustAlertorVolume(int id, int vol);

    VoidResult driveAirerLightOpt(int id, boolean on);

    VoidResult driveAirerMotorOpt(int id, MotorOpt opt);

    VoidResult driveAirerAirDryOpt(int id, boolean on, int timeInMinutes);

    VoidResult driveAirerStovingOpt(int id, boolean on, int timeInMinutes);

    VoidResult driveAirerSterilizeOpt(int id, boolean on, int timeInMinutes);

    VoidResult switchDevice(int id, boolean on);

    VoidResult setFloorHeatingTemp(int id, double temp);

    VoidResult setFloorHeatingTemp(int id, int temp);

    VoidResult setFloorHeatingMode(int id, boolean autoElseManual);

    VoidResult setFloorHeatingPlan(int id, List<ZigbeeFloorHeatingStatus.SettingZone> zoneList);

    VoidResult setFloorhearManagerOpt(int id, int[] channal, boolean on);

    GetFloorheatingStatusResult getFloorheatDevStatu(int id);

    VoidResult setFloorheatingDevTemp(int id, double temp);

    VoidResult setFloorheatingDevLock(int id, boolean lock);

    VoidResult setFloorheatingOffTime(int id, String offTime);

    VoidResult setFloorheatingLockStatus(int id, boolean lock);

    FloorheatingConfigArgResult getFloorheatingConfigArg(int id);

    boolean isFloorHeatingSingleDayOff(int id);

    boolean freshAirSwitch(int id, boolean on);

    boolean freshAirSetRunModel(int id, ZigbeeFreshAirStatus.RUNMODEL runModel);

    boolean freshAirSetWorkModel(int id, ZigbeeFreshAirStatus.WORKMODEL workModel);

    boolean freshAirSetSpeed(int id, ZigbeeFreshAirStatus.SPEEDLELVEL speed);

    String freshAirGetCo2(int id);

    String freshAirGetPm25(int id);

    boolean freshAirSetFilterScreenWorkTime(int id, int timeIn100h);

    boolean freshAirResetFilterScreen(int id);

    VoidResult freshAirSetLockStatus(int id, boolean lock);

    VoidResult setFreshAirOffTime(int id, String timeOff);

    VoidResult setFreshAitFilterAlarmTime(int id, boolean reset, int alarmTime);

    ChopinFreshAirConfigArgsResult getChopinFreshAirConfigArgs(int id);


    GetFreshAirStatusResult getFreshAirStatus(int id);

    VoidResult setFreshAirDevMode(int id, int mode);

    VoidResult setFreshAirDevSpeed(int id, int speed);

    VoidResult resetFreshAirDevFilterTime(int id);

    VoidResult setFreshAirDevFilterAlarmTime(int id, int timw);

    VoidResult delFreshAirDev(int id);

    boolean adjustDimmerIlum(int id, int bri);

    boolean adjustDimmerColor(int id, int[] rgb);

    boolean adjustDimmerWhiteIlum(int id, int bri);

    VoidResult setDimmerRealIlum(int id, int bri);

    GetDimmableLightConfigResult getdimmableLightConfig(int id);

    VoidResult setDimmableLightConfig(int id, int softOn, int briLow, int briHigh);

    boolean adjustRgbwPickedColor(int id, int modeId, int[] rgb, int bri, int whiteBri);

    boolean adjustRgbwDymanicColor(int id, int modeId);

    JsonArray getDeviceAppArgs(int id, SHDeviceType type);

    boolean setDeviceAppArgs(int id, SHDeviceType devType, JsonArray args);

    boolean setDeviceAppArg(int id, SHDeviceType devType, String argType, JsonElement argValue);

    boolean setDeviceCcuArg(int id, SHDeviceType devType, String argType, JsonElement argValue);

    boolean setSocketPowerConfig(int devId, String power, boolean powerOff, boolean powerRemember);

    GetSocketRunArgsResult getSocketPowerConfig(int devId);

    Boolean identify(int id);

    Boolean closeAlertor(int id);

    Boolean zigbeekonkesocketOpt(int id, boolean on);

    void ksocketOpt(int id, boolean on);

    void ksocketUsbOpt(int id, boolean on);

    void ksocketLightOpt(int id, boolean on);

    boolean klockOpt(int id, String password, boolean on);

    VoidResult codedLockOpt(int id, String password, boolean on);

    void sceneOpt(int sceneId);

    void motorOpt(int devId, String operation);

    boolean dooyaSeek(int devId, int pos);

    boolean dooyaRouteCfg(int devId);

    boolean setDooyaReverse(int devId, boolean on);

    boolean getDooyaReverse(int devId);

    VoidResult setMotorSmartConfig(int devId, String cmd, String cmdArg);

    void hueOpt(int devId, boolean on, int bri, double[] xy);

    void klightOpt(int devId, String mode, boolean on, int bri, int[] rgb, int speed);

    void infraredOpt(int devId, int code);

    boolean sendInfrared(int devId, int code);

    void asyncActiveShortcutPanel(int id, int buttonId);

    boolean musicControllerPlayPause(int id);

    boolean musicControllerPlayPre(int id);

    boolean musicControllerPlayNext(int id);

    boolean musicControllerPlayInMusicList(int id, int musicIndex);

    boolean musicControllerPlaySeek(int id, int seekTimeInMs);

    boolean setMusicControllerVolume(int id, int volume);

    boolean setMusicControllerZoneVolume(int id, int zoneId, int zoneVolume, boolean volSwitch);

    boolean changeMusicControllerLoopMode(int id);

    boolean enbaleMusicControllerEQ(int id, boolean enable);

    boolean setMusicControllerEqMode(int id, String mode);

    List<GetYouzhuanMusicListResult.MusicListBean> queryYouzhuanMusicList(int id, String arg);

    VoidResult setYouzhuanMusicPlay(int id);

    VoidResult setYouzhuanMusicPause(int id);

    VoidResult playYouzhuanMusicPre(int id);

    VoidResult playYouzhuanMusicNext(int id);

    VoidResult playYouzhuanMusicByIndex(int id, int index);

    VoidResult setYouzhuanMusicSeek(int id, int pos);

    VoidResult setYouzhuanMusicVol(int id, int vol);

    VoidResult setYouzhuanMusicLoopModel(int id, int model);

    VoidResult setYouzhuanMusicEq(int id, int eq);

    VoidResult setYouhzuanMusicSource(int id, int source);

    VoidResult startSearchYouzhuanMusic();

    VoidResult stopSearchYouzhuanMusic();

    Device editYouzhuanMusic(int id, String name, int roomId);

    VoidResult delYouzhuanMusic(int id);

    boolean setHumidifierFogVol(int devId, int vol);

    boolean setHumidifierOnOff(int devId, boolean on);

    boolean setHumidifierConstantWet(int devId, boolean on, int vol);

    boolean setAircleanrWindVol(int devId, int vol);

    boolean setAircleanrOnOff(int devId, boolean on);

    boolean setAircleanrAnionOnOff(int devId, boolean on);

    boolean setAircleanrSleepOnOff(int devId, boolean on);

    boolean setAircleanrAutoOnOff(int devId, boolean on);

    VoidResult fancoilSetSmartModel(int id, int modeId);

    VoidResult fancoilSetSmartModel(int id, FancoilSmartModel model);

    VoidResult fancoilSetDelaytask(int id, boolean onEnable, String onDelayTime, boolean offEnable, String offDelayTime);

    VoidResult fancoilSetRunTemp(int id, String temp);

    VoidResult fancoilSetFanSpeed(int id, ZigbeeFanCoilStatus.FANSPEED speed);

    VoidResult fancoilSetRunModel(int id, com.sds.sdk.android.sh.model.ZigbeeFanCoilStatus.RUNMODEL model);

    GetFancoilSmartModelResult fancoilGetSmartModel(int id);

    boolean saveFancoilCustomSmartModel(int id, FancoilSmartModel model);

    FancoilSmartModel getFancoilCustomSmartModel(int id);

    GetFancoilSystemStatusResult fancoilGetSystemStatus(int id);

    VoidResult fancoilSetLocking(int id, String locking);

    VoidResult fancoilSetLockStatus(int id, boolean lock);

    FancoilConfigArgsResult getFancoilConfigArgs(int id);

    GetElectricalEnergyValueResult getElectricalEnergyValues(int id);

    GetElectricalEnergyArgsResult getElectricalEnergyArgs(int id);

    GetElectricalClearingInfoResult getElectricalClearningInfoResult(int id);

    GetElectricalClearingDateResult getElectricalClearningDateResult(int id);

    GetElectricalSwitchStatusResult getElectricalSwitchStatus(int var1);

    VoidResult setElectricalSwitch(int var1, boolean var2);

    VoidResult editCodedLockUser(int id, int userId, int openType, boolean hijack, boolean permission, String key, int openTimes, String startTime, String endTime);

    GetCodedLockUserInfoResult getCodedLockUser(int id, int userId);

    AddCodedLockUserResult addCodedLockUser(int id, int openType, boolean permission, boolean hijack, String key);

    VoidResult delCodedLockUser(int id, int[] userId);

    VoidResult delCodedLockAllUser(int id);

    VoidResult codedlockEnterCardmode(int id, boolean encrypt);

    //空开
    VoidResult clearAirSwitchAlarm(int id);

    GetAirSwitchStatusResult getAirSwitchStatus(int id);

    boolean delAirSwitch(int id);

    void destroy();

    String getZigbeeDevHwVersion(String mac);

    void resetTimeInterval();

    void reconect(int delay);

    GetZbDevOnlineSwitchResult getZbDevSwitchStatus(int gwId);

    VoidResult setZbDevSwitchStatus(int gwId, String arg);

    VoidResult delFloorheatingDev(int deviceId);

    VoidResult addAirBox(String mac, String type);

    VoidResult delAirBoxDev(int deviceId);

    Device setAirBox(int devId, String name, int roomId);

    GetAirBoxStateResult getAirBoxStete(int devId, int arg);

    GetAirBoxDayStatisitcResult getAirBoxDayStatisitc(int devId, String field, String start, String end);

    AirBoxNodeArgResult getAirboxNodeArg(int devId);
}
